package com.kawaiior.asoulworld.item;

import com.kawaiior.asoulworld.item.armor.asoulTeam.*;
import com.kawaiior.asoulworld.item.misc.ItemASSoulStone;
import com.kawaiior.asoulworld.item.misc.ItemASSoulStoneType;
import com.kawaiior.asoulworld.item.misc.arrow.ItemDianaCandy;
import com.kawaiior.asoulworld.item.weapon.DianaHolyPressure;
import com.kawaiior.asoulworld.items.weapon.*;
import net.minecraft.init.SoundEvents;
import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.Item;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.EnumHelper;

import java.util.ArrayList;
import java.util.List;

public class ModItems {

	public static final List<Item> ITEMS = new ArrayList<Item>();
	//test

//	public static final Item AS_LLLLLL_TEST = new ItemLegendSword("test_legend_sword");

//	public static final Item AS_BASE_TEST2 = new PropertyWeapon("test2");
//	public static final Item AS_BASE_TEST = new AsWeaponBase("test_base");

	//TOOL M

	//Basic
	//public static final Item PAPER_BLOOD = new ItemBase("paper_blood");
	//public static final Item COOL_SWORD = new ItemCoolSword("cool_sword", Item.ToolMaterial.DIAMOND);
	//public static final Item HEALING_GUN = new ItemHealingGun("healing_gun");

	//Item
//	public static final Item AS_JELLYFISH = new ItemBase("as_jellyfish");
	public static final Item AS_PURE_GOLD = new ItemBase("as_pure_gold");
//	public static final Item AS_COMPOSITION = new ItemBase("as_composition");
	public static final Item DIANA_CANDY = new ItemDianaCandy("diana_candy");
//	public static final Item AS_ACAO_TREASURE = new ItemBase("as_acao_treasure");

	public static final Item AS_RAW_GOLD = new ItemBase("as_raw_gold");

	//已弃用
//	public static final Item AS_FUEL_A = new ItemBase("as_fuel_a");
//	public static final Item AS_FUEL_B = new ItemBase("as_fuel_b");
//	public static final Item AS_FUEL_C = new ItemBase("as_fuel_c");
//	public static final Item AS_FUEL_D = new ItemBase("as_fuel_d");
//	public static final Item AS_FUEL_E = new ItemBase("as_fuel_e");

	public static final Item AS_SOUL_STONE = new ItemASSoulStone("as_soul_stone");

	public static final Item AS_SOUL_STONE_A = new ItemASSoulStoneType("as_soul_stone_a");
	public static final Item AS_SOUL_STONE_B = new ItemASSoulStoneType("as_soul_stone_b");
	public static final Item AS_SOUL_STONE_C = new ItemASSoulStoneType("as_soul_stone_c");
	public static final Item AS_SOUL_STONE_D = new ItemASSoulStoneType("as_soul_stone_d");
	public static final Item AS_SOUL_STONE_E = new ItemASSoulStoneType("as_soul_stone_e");

	public static final Item AS_NANAMI_STONE = new ItemASSoulStoneType("as_soul_stone_nanami");
	public static final Item AS_AZI_STONE = new ItemASSoulStoneType("as_soul_stone_azi");
	public static final Item AS_TAFFY_STONE = new ItemASSoulStoneType("as_soul_stone_taffy");

	public static final Item FATE_MIYU_WAND = new ItemMiyuWand("fate_miyu_wand");

	//public static final Item PAPER_BLOOD = new ItemBase("paper_blood");


	//Fans
	//public static final Item DIANA_FANS = new ItemBase("diana_fans");
	//public static final Item AVA_FANS = new ItemBase("ava_fans");
	//public static final Item EILEEN_FANS = new ItemBase("eileen_fans");
	//public static final Item CAROL_FANS = new ItemBase("carol_fans");
	//public static final Item KIRA_FANS = new ItemBase("kira_fans");
	//Foods


	//TM
	public static final Item.ToolMaterial TOOL_AS_PURE_GOLD =
			EnumHelper.addToolMaterial("tool_as_pure_gold", 0, 917, 7.0F, 4F, 30).setRepairItem(new ItemStack(ModItems.AS_PURE_GOLD));

	public static final Item.ToolMaterial TOOL_SUPER_AS_PURE_GOLD =
			EnumHelper.addToolMaterial("tool_as_pure_gold", 5, 917, 7.0F, 4F, 30).setRepairItem(new ItemStack(ModItems.AS_PURE_GOLD));
	//Weapon

	public static final Item KIRA_IRON_STICK = new ItemKiraIronStick("kira_iron_stick");
	public static final Item ITEM_AS_TIME_SWORD = new ItemTimeSword("as_item_time_sword");
	public static final Item DIANA_CLASSICS = new ItemDianaClassics("diana_classics");
	public static final Item AVA_DRILL = new ItemAvaDrill("ava_drill");
	public static final Item KIRA_WAND = new ItemKiraWand("kira_wand");
	public static final Item EILEEN_ROSEMARY = new ItemEileenRosemary("eileen_rosemary");
	public static final Item CAROL_FANS_SWORD = new ItemCarolFansSword("carol_fans_sword");
	public static final Item AS_LEGEND_SWORD = new ItemLegendSword(
			"as_legend_sword");
	public static final Item KIRA_YGNN = new ItemKiraCow("kira_ygnn");


	public static final Item DIANA_HOLY_PRESSURE = new DianaHolyPressure("diana_holy_pressure", TOOL_SUPER_AS_PURE_GOLD);
	public static final Item ITEM_CRYSTALL_ROSE = new ItemCrystalRose("item_crystall_rose");


//	public static final Item ITEM_KIRA_HUANG_SWORD = new ItemKiraHuangSword("kira_huang", TOOL_SUPER_AS_PURE_GOLD);

//	public static final Item CELESTIALLIGHTSWORD = new ItemCelestialLightSword("celestial_light_sword",TOOL_SUPER_AS_PURE_GOLD);

//	public static final Item DIANA_HOLY_PRESSURE = new DianaHolyPressure("diana_holy_pressure");


	/*
	WOOD(0, 59, 2.0F, 0.0F, 15),
    STONE(1, 131, 4.0F, 1.0F, 5),
    IRON(2, 250, 6.0F, 2.0F, 14),
    DIAMOND(3, 1561, 8.0F, 3.0F, 10),
    GOLD(0, 32, 12.0F, 0.0F, 22);

    harvestLevel, maxUses, efficiency, damage, enchantability
	*/

	//Tool Material
//	public static final Item BLOOD_IRON_INGOT = new ItemBase("blood_iron_ingot");
//
//    public static final Item.ToolMaterial TOOL_MATERIAL_BLOOD =
//			EnumHelper.addToolMaterial("material_blood", 3, 512, 3.0F, 4F, 20).setRepairItem(new ItemStack( ModItems.BLOOD_IRON_INGOT));
//
//	public static final ItemKinshipSword KINSHIP_SWORD = new ItemKinshipSword("kinship_sword", TOOL_MATERIAL_BLOOD);

	//Armor
//    LEATHER("leather", 5, new int[]{1, 2, 3, 1}, 15, SoundEvents.ITEM_ARMOR_EQUIP_LEATHER, 0.0F),
//    CHAIN("chainmail", 15, new int[]{1, 4, 5, 2}, 12, SoundEvents.ITEM_ARMOR_EQUIP_CHAIN, 0.0F),
//    IRON("iron", 15, new int[]{2, 5, 6, 2}, 9, SoundEvents.ITEM_ARMOR_EQUIP_IRON, 0.0F),
//    GOLD("gold", 7, new int[]{1, 3, 5, 2}, 25, SoundEvents.ITEM_ARMOR_EQUIP_GOLD, 0.0F),
//    DIAMOND("diamond", 33, new int[]{3, 6, 8, 3}, 10, SoundEvents.ITEM_ARMOR_EQUIP_DIAMOND, 2.0F);
	//Note that if you want to set a mod thing as repair material, define them before the material, otherwise it will be empty.

//    public static final ItemArmor.ArmorMaterial moroonArmorMaterial = EnumHelper.addArmorMaterial(
//            "idlframewok:armor_moroon", "idlframewok:armor_moroon", 80, new int[] {3, 6, 8, 3}, 2, SoundEvents.ITEM_ARMOR_EQUIP_GOLD, 2)
//            .setRepairItem(new ItemStack(Items.QUARTZ));
//

    public static final ItemArmor.ArmorMaterial DIANA_ARMOR_MATERIAL = EnumHelper.addArmorMaterial(
            "asoulworld:armor_diana", "asoulworld:diana_armor", 80, new int[] {3, 6, 8, 3},
			35, SoundEvents.ITEM_ARMOR_EQUIP_GOLD, 5);

	public static final ItemArmor.ArmorMaterial AVA_ARMOR_MATERIAL = EnumHelper.addArmorMaterial(
			"asoulworld:armor_ava", "asoulworld:ava_armor", 80, new int[] {3, 6, 8, 3},
			35, SoundEvents.ITEM_ARMOR_EQUIP_GOLD, 5);

	public static final ItemArmor.ArmorMaterial CAROL_ARMOR_MATERIAL = EnumHelper.addArmorMaterial(
			"asoulworld:armor_carol", "asoulworld:carol_armor", 80, new int[] {3, 6, 8, 3},
			35, SoundEvents.ITEM_ARMOR_EQUIP_GOLD, 5);

	public static final ItemArmor.ArmorMaterial KIRA_ARMOR_MATERIAL = EnumHelper.addArmorMaterial(
			"asoulworld:armor_kira", "asoulworld:kira_armor", 80, new int[] {3, 6, 8, 3},
			35, SoundEvents.ITEM_ARMOR_EQUIP_GOLD, 5);

	public static final ItemArmor.ArmorMaterial EILEEN_ARMOR_MATERIAL = EnumHelper.addArmorMaterial(
			"asoulworld:armor_eileen", "asoulworld:eileen_armor", 80, new int[] {3, 6, 8, 3},
			35, SoundEvents.ITEM_ARMOR_EQUIP_GOLD, 5);

	public static final ItemArmor.ArmorMaterial NANAMI_ARMOR_MATERIAL = EnumHelper.addArmorMaterial(
			"asoulworld:armor_nanami", "asoulworld:nanami_armor", 80, new int[] {3, 6, 8, 3},
			35, SoundEvents.ITEM_ARMOR_EQUIP_GOLD, 5);

	public static final ItemArmor.ArmorMaterial AZI_ARMOR_MATERIAL = EnumHelper.addArmorMaterial(
			"asoulworld:armor_azi", "asoulworld:azi_armor", 80, new int[] {3, 6, 8, 3},
			35, SoundEvents.ITEM_ARMOR_EQUIP_GOLD, 5);

	public static final ItemArmor.ArmorMaterial TAFFY_ARMOR_MATERIAL = EnumHelper.addArmorMaterial(
			"asoulworld:armor_taffy", "asoulworld:taffy_armor", 80, new int[] {3, 6, 8, 3},
			35, SoundEvents.ITEM_ARMOR_EQUIP_GOLD, 5);

	//Food
//	static PotionEffect eff = new PotionEffect(MobEffects.LEVITATION, TICK_PER_SECOND * 60, 0);
//	public static final ItemFoodBase FIGHT_BREAD = (ItemFoodBase) new ItemFoodBase("war_bread", 10, 10, false).
//			setPotionEffect(eff, 1.0f).
//			setAlwaysEdible();
//    public static final ItemFoodBase MEMORY_BREAD = new ItemFoodBase("memory_bread", 3, 0.6f, false).SetXP(10);


	//Record

	//public static final ItemRecord MUSICDISC = new ItemMusicDiscRE8("musicre8", SoundsHandler.RE8MUSIC, Main.ITEM_TAB);

	 // 唱片，为了过审，网易的版本不会实例化
//	 public static final ItemRecord ITEM_RECORD_CAT_POISON = new RecordCatPoison("item_record_cat_poison", ModSoundHandler.RECORD_CAT_POISON);
//	 public static final ItemRecord ITEM_RECORD_QUITE = new RecordCatPoison("item_record_quite", ModSoundHandler.RECORD_QUITE);
//	 public static final ItemRecord ITEM_RECORD_RED_HIGH_SHOES = new RecordCatPoison("item_record_red_high_shoes", ModSoundHandler.RECORD_RED_HIGH_SHOES);
//	 public static final ItemRecord ITEM_RECORD_ROSEMARY = new RecordCatPoison("item_record_rosemary", ModSoundHandler.RECORD_ROSEMARY);
//	 public static final ItemRecord ITEM_RECORD_SUPER_SENSITIVE = new RecordCatPoison("item_record_super_sensitive", ModSoundHandler.RECORD_SUPER_SENSITIVE);


	//Armor
//	public static final ItemHelmSniper helmetSniper = (ItemHelmSniper) new ItemHelmSniper("helmet_sniper", moroonArmorMaterialSniper, 1, EntityEquipmentSlot.HEAD);
//
//	public static final ItemArmorBase[] MOR_GENERAL_ARMOR =
//			{        new ItemArmorBase("mor_armor_1", moroonArmorMaterial, 1, EntityEquipmentSlot.HEAD)
//					,new ItemArmorBase("mor_armor_2", moroonArmorMaterial, 1, EntityEquipmentSlot.CHEST)
//					,new ItemArmorBase("mor_armor_3", moroonArmorMaterial, 1, EntityEquipmentSlot.LEGS)
//					,new ItemArmorBase("mor_armor_4", moroonArmorMaterial, 1, EntityEquipmentSlot.FEET)
//			};

	public static final Item DIANA_HELMET = new ItemArmorDianan("diana_helmet", DIANA_ARMOR_MATERIAL,1, EntityEquipmentSlot.HEAD);
	public static final Item DIANA_CHESTPLATE = new ItemArmorDianan("diana_chestplate", DIANA_ARMOR_MATERIAL,1, EntityEquipmentSlot.CHEST);
	public static final Item DIANA_LEGGINGS = new ItemArmorDianan("diana_leggings", DIANA_ARMOR_MATERIAL,1, EntityEquipmentSlot.LEGS);
	public static final Item DIANA_BOOTS = new ItemArmorDianan("diana_boots", DIANA_ARMOR_MATERIAL,1, EntityEquipmentSlot.FEET);

	public static final Item AVA_HELMET = new ItemArmorAva("ava_helmet", AVA_ARMOR_MATERIAL,1, EntityEquipmentSlot.HEAD);
	public static final Item AVA_CHESTPLATE = new ItemArmorAva("ava_chestplate", AVA_ARMOR_MATERIAL,1, EntityEquipmentSlot.CHEST);
	public static final Item AVA_LEGGINGS = new ItemArmorAva("ava_leggings", AVA_ARMOR_MATERIAL,1, EntityEquipmentSlot.LEGS);
	public static final Item AVA_BOOTS = new ItemArmorAva("ava_boots", AVA_ARMOR_MATERIAL,1, EntityEquipmentSlot.FEET);

	public static final Item CAROL_HELMET = new ItemArmorCarol("carol_helmet", CAROL_ARMOR_MATERIAL,1, EntityEquipmentSlot.HEAD);
	public static final Item CAROL_CHESTPLATE = new ItemArmorCarol("carol_chestplate", CAROL_ARMOR_MATERIAL,1, EntityEquipmentSlot.CHEST);
	public static final Item CAROL_LEGGINGS = new ItemArmorCarol("carol_leggings", CAROL_ARMOR_MATERIAL,1, EntityEquipmentSlot.LEGS);
	public static final Item CAROL_BOOTS = new ItemArmorCarol("carol_boots", CAROL_ARMOR_MATERIAL,1, EntityEquipmentSlot.FEET);

	public static final Item KIRA_HELMET = new ItemArmorKira("kira_helmet", KIRA_ARMOR_MATERIAL,1, EntityEquipmentSlot.HEAD);
	public static final Item KIRA_CHESTPLATE = new ItemArmorKira("kira_chestplate", KIRA_ARMOR_MATERIAL,1, EntityEquipmentSlot.CHEST);
	public static final Item KIRA_LEGGINGS = new ItemArmorKira("kira_leggings", KIRA_ARMOR_MATERIAL,1, EntityEquipmentSlot.LEGS);
	public static final Item KIRA_BOOTS = new ItemArmorKira("kira_boots", KIRA_ARMOR_MATERIAL,1, EntityEquipmentSlot.FEET);

	public static final Item EILEEN_HELMET = new ItemArmorEileen("eileen_helmet", EILEEN_ARMOR_MATERIAL,1, EntityEquipmentSlot.HEAD);
	public static final Item EILEEN_CHESTPLATE = new ItemArmorEileen("eileen_chestplate", EILEEN_ARMOR_MATERIAL,1, EntityEquipmentSlot.CHEST);
	public static final Item EILEEN_LEGGINGS = new ItemArmorEileen("eileen_leggings", EILEEN_ARMOR_MATERIAL,1, EntityEquipmentSlot.LEGS);
	public static final Item EILEEN_BOOTS = new ItemArmorEileen("eileen_boots", EILEEN_ARMOR_MATERIAL,1, EntityEquipmentSlot.FEET);

	public static final Item NANAMI_HELMET = new ItemArmorNaNaMi("nanami_helmet", NANAMI_ARMOR_MATERIAL,1, EntityEquipmentSlot.HEAD);
	public static final Item NANAMI_CHESTPLATE = new ItemArmorNaNaMi("nanami_chestplate", NANAMI_ARMOR_MATERIAL,1, EntityEquipmentSlot.CHEST);
	public static final Item NANAMI_LEGGINGS = new ItemArmorNaNaMi("nanami_leggings", NANAMI_ARMOR_MATERIAL,1, EntityEquipmentSlot.LEGS);
	public static final Item NANAMI_BOOTS = new ItemArmorNaNaMi("nanami_boots", NANAMI_ARMOR_MATERIAL,1, EntityEquipmentSlot.FEET);

	public static final Item AZI_HELMET = new ItemArmorNaNaMi("azi_helmet", AZI_ARMOR_MATERIAL,1, EntityEquipmentSlot.HEAD);
	public static final Item AZI_CHESTPLATE = new ItemArmorNaNaMi("azi_chestplate", AZI_ARMOR_MATERIAL,1, EntityEquipmentSlot.CHEST);
	public static final Item AZI_LEGGINGS = new ItemArmorNaNaMi("azi_leggings", AZI_ARMOR_MATERIAL,1, EntityEquipmentSlot.LEGS);
	public static final Item AZI_BOOTS = new ItemArmorNaNaMi("azi_boots", AZI_ARMOR_MATERIAL,1, EntityEquipmentSlot.FEET);

	public static final Item TAFFY_HELMET = new ItemArmorTaffy("taffy_helmet", TAFFY_ARMOR_MATERIAL,1, EntityEquipmentSlot.HEAD);
	public static final Item TAFFY_CHESTPLATE = new ItemArmorTaffy("taffy_chestplate", TAFFY_ARMOR_MATERIAL,1, EntityEquipmentSlot.CHEST);
	public static final Item TAFFY_LEGGINGS = new ItemArmorTaffy("taffy_leggings", TAFFY_ARMOR_MATERIAL,1, EntityEquipmentSlot.LEGS);
	public static final Item TAFFY_BOOTS = new ItemArmorTaffy("taffy_boots", TAFFY_ARMOR_MATERIAL,1, EntityEquipmentSlot.FEET);

	//public static final ItemSkillDecodeItem skillDecodeItem = (ItemSkillDecodeItem) new ItemSkillDecodeItem("skill_decode_item").setRarity(EnumRarity.RARE);

	//Package Example
//	public static final ItemPackage RANDOM_SKILL = (ItemPackage) new ItemPackage("random_skill", new Item[]{
//			Items.BLAZE_ROD, Items.PAPER
//	}).setMaxStackSize(1);
}
